Computing devices have made significant contributions toward the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous devices, such as personal computers, laptop computers, servers, minicomputers, mainframe computers, workstations, computer aided design (CAD) system, simulators, emulators, automatic test equipment (ATE) systems, and distributed computer systems, have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, engineering, education and entertainment. As computing devices continue to progress, techniques such as multi-threading, virtualization and the like are being utilized to achieve increased performance.
For example, the virtualization of a physical computing device creates a uniform hardware image, implemented in software, on which operating systems and applications run. Each virtual machine is a software representation of a physical machine that can run or host a guest operating system and one or more applications. A typical virtualized computing platform includes a physical machine and one or more virtual machines for executing a host operating system and one or more applications.
To simulate virtualized computing platforms during development, multiple simulator components and debuggers are utilized to simulate the platform. The debuggers are applications attached to the simulator components for analyzing, displaying and modifying the state of the simulation. The conventional debuggers are assumed to be the master of the run mode of their corresponding simulation. However, the conventional debugger server is attached to the simulation in such a way that the run mode of the simulation is shared between all debuggers. Furthermore, the conventional debugger server forces a debugger to always abort its current operation. When the simulation stops, it is not always useful to abort the current operation of the debugger (e.g., to return from the current function). Furthermore, when the simulation continues, the debugger has to automatically choose one of the possible ways to continue the simulation. There is a substantial risk that it may choose an operation that does not fit to the current intention of the user. Therefore, there is a continuing need for improved multi-debugger techniques.